﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//win32 API介绍

//控制台程序（Console）
//平常我们运行起来的黑框框就是控制台程序，我们可以使用cmd命令设置控制台窗口的长度：设置控制台窗口的大小，30行，100列
//mode con cols=100 lines=30   (mode命令)
//也可以通过命令行设置控制台窗口的名字 (title命令)
//title 贪吃蛇  
//这些能在控制台执行的命令，也可以调用C语言函数执行

//system 函数可以用来执行系统命令
#include <stdlib.h>
//int main()
//{
//	//设置控制台的相关属性
//	system("mode con cols=100 lines=30");
//	system("title 贪吃蛇");
//
//	system("pause");
//	//getchar();
//	return 0;
//}

#include <windows.h>
//控制台屏幕上的坐标 COORD(是一个结构体)
//int main()
//{
//	COORD pos1 = { 0,0 };
//	COORD pos2 = { 10,20 };
//	return 0;
//}

//GetStdHandle
//int main()
//{
//	//获得标准输出设备的句柄
//	HANDLE houtput = GetStdHandle(STD_OUTPUT_HANDLE);
//
//	//当一开始不知道要穿什么句柄时,先置为NULL
//	HANDLE houtput = NULL;
//	houtput = GetStdHandle(STD_OUTPUT_HANDLE);
//	return 0;
//}

//GetConsoleCursorInfo
//int main()
//{
//	//获得标准输出设备的句柄
//	HANDLE houtput = NULL;
//	houtput = GetStdHandle(STD_OUTPUT_HANDLE);
//
//	CONSOLE_CURSOR_INFO cursor_info = { 0 };
//	GetConsoleCursorInfo(houtput, &cursor_info);
//
//	cursor_info.dwSize = 50;
//	printf("%d\n", cursor_info.dwSize);
//
//	system("pause");
//	return 0;
//}

//SetConsoleCursorInfo
#include <stdbool.h>
//int main()
//{
//	//获得标准输出设备的句柄
//	HANDLE houtput = NULL;
//	houtput = GetStdHandle(STD_OUTPUT_HANDLE);
//
//	//定义一个光标信息的结构体
//	CONSOLE_CURSOR_INFO cursor_info = { 0 };
//
//	//获取和output句柄相关的控制台上的光标信息，存放在cursor_info中
//	GetConsoleCursorInfo(houtput, &cursor_info);
//
//	//修改光标的占比
//	//cursor_info.dwSize = 50;
//
//	//隐藏光标
//	cursor_info.bVisible = false;
//
//	//设置和output句柄相关的控制台上的光标信息
//	SetConsoleCursorInfo(houtput, &cursor_info);
//
//	system("pause");
//	return 0;
//}

//SetConsoleCursorPosition
//int main()
//{
//	HANDLE houtput = NULL;
//	houtput = GetStdHandle(STD_OUTPUT_HANDLE);
//
//	//定位光标
//	COORD pos = { 10,20 };
//	SetConsoleCursorPosition(houtput, pos);
//
//	printf("hehe\n");
//	//getchar();
//	//system("pause");
//	return 0;
//}
//封装函数
//void set_pos(short x, short y)
//{
//	HANDLE houtput = NULL;
//	houtput = GetStdHandle(STD_OUTPUT_HANDLE);
//
//	//定位光标
//	COORD pos = { x,y };
//	SetConsoleCursorPosition(houtput, pos);
//}
//int main()
//{
//	set_pos(10, 20);
//	printf("hehe\n");
//
//	set_pos(10, 10);
//	printf("hehe\n");
//
//	getchar();
//	return 0;
//}

//GetAsynnKeyState
//结果是1表示被按过
//结果是0表示未被按过
//int main()
//{
//	short ret = GetAsyncKeyState(0x35);
//	if ((ret & 1) == 1)
//	{
//		printf("5被按过\n");
//	}
//	else
//	{
//		printf("没有被按过\n");
//	}
//	return 0;
//}

//#define KEY_PRESS(vk) ((GetAsyncKeyState(vk)&1)?1:0)
//int main()
//{
//	while (1)
//	{
//		if (KEY_PRESS(0x30))
//		{
//			printf("0\n");
//		}
//		else if(KEY_PRESS(0x31))
//		{
//			printf("1\n");
//		}
//		else if (KEY_PRESS(0x32))
//		{
//			printf("2\n");
//		}
//		else if (KEY_PRESS(0x33))
//		{
//			printf("3\n");
//		}
//		else if (KEY_PRESS(0x34))
//		{
//			printf("4\n");
//		}
//		else if (KEY_PRESS(0x35))
//		{
//			printf("5\n");
//		}
//		else if (KEY_PRESS(0x36))
//		{
//			printf("6\n");
//		}
//		else if (KEY_PRESS(0x37))
//		{
//			printf("7\n");
//		}
//		else if (KEY_PRESS(0x38))
//		{
//			printf("8\n");
//		}
//		else if (KEY_PRESS(0x39))
//		{
//			printf("9\n");
//		}
//	}
//	return 0;
//}

//类项
#include <locale.h>

//int main()
//{
//	char* ret = setlocale(LC_ALL, NULL);
//	printf("默认的本地信息:%s\n", ret);
//
//	ret = setlocale(LC_ALL, "");
//	printf("设置后的本地信息:%s\n", ret);
//	return 0;
//}

//宽字符打印
int main()
{
	//设置本地化
	setlocale(LC_ALL, "");
	
	char a = 'a';
	char b = 'b';
	printf("%c%c\n", a, b);

	wchar_t wc1 = L'你';
	wchar_t wc2 = L'好';
	wprintf(L"%lc\n", wc1);
	wprintf(L"%lc\n", wc2);
	
	wprintf(L"%lc\n", L'●');
	wprintf(L"%lc\n", L'★');
	return 0;
}